Displaying Range Maps

There are several ways to display Range Maps. If you want to see a flat range image, where intensity corresponds to depth, generate the range map in Heightfield format. Then the sequence of commands in Appendix C will work fine (i.e., hf2gil together with viewgil). You can also use Rayshade itself to display a Range Map, as in this example:

   light .6 .6 .6 directional 0 0 -1
   light 1 1 1 directional 1 1 -5
   light 1 1 1 directional -1 1 -5
   up 0 1 0
   eyep 0 0 -100   	/* Long focal length */
   lookp 0 0 0
   fov 0.458364		/* Small field of view, to eliminate the
      		   worst of the perspective effects */
   heightfield RANGE.hf translate -.5 -.5 -.5 rotate 0 0 1 180

But be aware that this is just for display purposes; pixels in this re-rendered image do not correspond exactly to those in the original image.

You can also get a more precise plot, with axes labelled, using GNUPlot. Generate the Range Map in Extended Text format, and run it through this filter to remove the background pixels and negate the depth values:

   sed '/-1000/d' | uniq | awk '/#/ {print; next} \
      NF == 3 {print $1, $2, -$3; next} {print}'

Store the output from this filter in some file (e.g., range.plot). Now start GNUPlot and give it the following commands:

   set parametric
   splot 'range.plot'

You can change the viewpoint easily in GNUPlot: enter help set view at the command prompt for details.